import { userAccountLogin } from '@/api/user.js'
const user = {
  namespaced: true,
  // 当 state 写成一个普通对象 和 一个函数返回一个对象的区别
  // 写成函数是为了复用  复用模块的时候数据互相独立, 互不影响

  // 定义响应式数据 为了箭头函数 返回值唯一的时候省略 return 关键词
  // 但是又不能报语法错误 加上 () 就会当成一段完整的表达式 没有语法错误了
  state: () => ({
    // 个人用户信息
    profile: {
      id: '',
      nickname: '',
      avatar: '',
      token: '',
      mobile: ''
    }
  }),
  // 同步修改方法
  mutations: {
    setProfile (state, userInfo) {
      state.profile = userInfo
    },
    clearProfile (state) {
      state.profile = {}
    }
  },
  // 异步修改方法
  actions: {
    async fetchLogin (ctx, { account, password }) {
      // 1. 登录请求
      const res = await userAccountLogin({ account, password })
      // 2. 拿到用户数据
      // 3. 通过调用 mutation 函数 存入 state
      ctx.commit('setProfile', res.data.result)
    }
  }
}

export default user
